package com.crm.system.service.messageManager;


import com.crm.common.model.DhPageInfo;
import com.crm.model.entity.MessageManager.Message;
import com.crm.model.entity.sys.UserAccount;
import com.crm.model.entity.sys.permissionManagement.SysCompany;
import com.crm.model.qo.messageManager.MarkReadQO;
import com.crm.model.qo.messageManager.MessageAddQO;
import com.crm.model.qo.messageManager.MessageQO;
import com.crm.model.qo.messageManager.ReplyQO;
import com.crm.model.vo.messageManager.MessageVO;
import com.crm.model.vo.user.UserAccountManagerVO;


import java.util.List;
import java.util.Map;

/**
 * 信息
 */
public interface MessageService {


    /**
     * 信息列表
     * @return
     */
    DhPageInfo<MessageVO> selectMessageList(Integer pageIndex, Integer pageSize, MessageQO messageQO, String sortName, String sortOrder);

    /**
     * 标记操作(已读和删除)
     * @param qo
     * @return
     */
    Boolean markRead(MarkReadQO qo);

    /**
     * 回复
     * @param message
     * @return
     */
    Boolean replyMessage(ReplyQO message);

    /**
     * 消息详情
     * @param messageId 消息id
     * @return
     */
    Map<String,Object> messageDetail(String messageId,String msgType);

    /**
     * 删除消息
     * @param themeId 主题id
     * @return
     */
    Boolean deleteThemeId(String themeId);

    /**
     * 标记为重要
     * @param messageId 消息id
     * @return
     */
    Boolean markImportant(String messageId);

    /**
     * 新增消息
     * @param qo
     * @return
     */
    Boolean addMessage(MessageAddQO qo);

    /**
     * 公司列表
     * @return
     */
    List<SysCompany> selectCompanyList();

    /**
     * 查询用户
     * @return
     */
    List<UserAccountManagerVO> selectUserList(String companyId);

    /**
     * 删除单条消息
     * @param messageId 消息id
     * @return
     */
    Boolean deleteByMessageId(String messageId);
}
